$Description$
你要从$A$到$B$,需要走$n$步。若你已走了$s$步,那么你再走一步的代价将为$a[s+1]$。
在走完每一步后有$\frac{1}{2}$的概率休息,休息后$s$将变为$0$。
求出你从$A$到$B$的代价的期望$p$乘上$2^{n-1}$对$998244353$取模的结果。
$Solution$
由于乘了$2^{n-1},$所以答案即是所有情况走的代价之和
考虑一个复杂度为$O(n^2)$的$dp,$设$f[i]$表示走了$i$步后的答案。
显然,$f[i]=\sum\limits_{i=1}^{i-1}(f[j]+2^{j-1}\times sum_{i-j})+sum_i$
然后发现这个式子很难优化所以对它进行推导
$f[i]=\sum\limits_{j=1}^{i-1}(f[j]+2^{j-1}\times sum[i-j])+sum[i]$
$f[i]=(\sum\limits_{j=1}^{i-1}f[j])+[\sum\limits_{j=1}^{i-1}(2^{j-1}\times sum_[i-j])]+sum[i]$
$f[i]=(\sum\limits_{j=1}^{i-1}f[j])+[\sum\limits_{j=1}^{i-1}(sum[j]\times2^{i-1-j})]+sum[i]$
$f[i]=(\sum\limits_{j=1}^{i-1}f[j])+[\sum\limits_{j=1}^{i-1}(a[i]\times\sum\limits_{k=0}^{i-1-j}2^k)]+sum[i]$
$f[i]=(\sum\limits_{j=1}^{i-1}f[j])+\sum\limits_{j=1}^{i-1}[a[i]\times (2^{i-j}-1)]+sum[i]$
$f[i]=(\sum\limits_{j=1}^{i-1}f[j])+\sum\limits_{j=1}^{i-1}[a[i]\times 2^{i-j}]-sum[i-1]+sum[i]$
$f[i]=(\sum\limits_{j=1}^{i-1}f[j])+\sum\limits_{j=1}^{i-1}[a[i]\times 2^{i-j}]+a[i]$
$f[i]=(\sum\limits_{j=1}^{i-1}f[j])+\sum\limits_{j=1}^{i}[a[i]\times 2^{i-j}]$
设$g[i]=\sum\limits_{j=1}^{i-1}f[j],h[i]=\sum\limits_{j=1}^{i}[a[i]\times 2^{i-j}]$
$g[i]=g[i-1]+f[i],h[i]=h[i-1]\times 2+a[i]$
然后就可以无脑递推了
$Code$
1 |
|